package com.mes.cloud.dao;

import com.mes.cloud.api.dto.request.product.ProductCustomerPageRequest;
import com.mes.cloud.api.dto.request.product.ProductEnableRequest;
import com.mes.cloud.api.dto.request.product.ProductListPageRequest;
import com.mes.cloud.api.dto.request.product.ProductPageRequest;
import com.mes.cloud.api.dto.response.syncdata.SynchroProductDto;
import com.mes.cloud.entity.Product;
import com.mes.cloud.entity.vo.product.CustomerProductVo;
import com.mes.cloud.entity.vo.product.ProductDetailsVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.ids.SelectByIdsMapper;

import java.util.List;

/**
 * 产品
 *
 * @author xy
 * @version 2019-08-20 14:30:12
 * @email yuan.xue3@pactera.com
 */
public interface ProductDao extends SelectByIdsMapper<Product>, Mapper<Product> {

    /**
     * <列表查询>
     *
     * @param productPageRequest
     * @return List<Product>
     * @author xy
     * @date 2019/8/20 16:39
     */
    List<Product> pageList(ProductPageRequest productPageRequest);

    /**
     * @Author ysd
     * @Description <可售产品_列表查询>
     * @Date 17:44 2019/9/24
     **/
    List<CustomerProductVo> productCustomerPageList(ProductCustomerPageRequest productCustomerPageRequest);

    /**
     * <批量更新状态>
     *
     * @param productEnableRequest
     * @return int
     * @author xy
     * @date 2019/8/21 8:44
     */
    int batchUpdateEnable(ProductEnableRequest productEnableRequest);


    /**
     * <查询产品详细信息>
     *
     * @param id
     * @return ProductDetailsVo
     * @author xy
     * @date 2019/8/21 14:35
     */
    ProductDetailsVo selectProductDetails(String id);

    /**
     * <查询列表>
     *
     * @param productListPageRequest
     * @return List<Product>
     * @author xy
     * @date 2019/8/21 14:35
     */
    List<Product> pageListByType(ProductListPageRequest productListPageRequest);

    /**
     * <查询列表>
     *
     * @param productListPageRequest
     * @return List<Product>
     * @author xy
     * @date 2019/8/21 14:35
     */
    List<Product> pageListAndTypeFilter(ProductListPageRequest productListPageRequest);

    /**
     * @Author ysd
     * @Description 批量插入
     * @Date 11:53 2019/10/28
     **/
    int batchInsert(List<Product> productList);

    /**
     * @Author ysd
     * @Description 查询详情
     * @Date 14:16 2019/10/28
     **/
    List<Product> findAllBySynchro(@Param("list") List<SynchroProductDto> resultList);
}
